#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
    char* mes = "Linux is so easy!\n";
    char buffer[1024] = {0};
    ssize_t ret;
    //将当前进程的默认文件创建权限掩码设置为0--- 并不影响系统的掩码，仅在当前进程内生效
    umask(0);

    int fd = open("bite.txt", O_CREAT|O_RDWR, 0664);
    if(fd < 0) 
    {
        perror("open error");
        return -1; 
    }   
    
    ret = write(fd, mes, strlen(mes));
    if (ret < 0)
    {
        perror("write error");
        return -1; 
    }   

    lseek(fd, 0, SEEK_SET);
    
    ret = read(fd, buffer, sizeof(buffer));
    if (ret < 0) 
    {
        perror("read error");
        return -1; 
    }
    else if (ret == 0) 
    {
        printf("end of file!\n");
        return -1; 
    }
    printf("%s", buffer);

    close(fd);

    return 0;
}

// int main()
// {
//     const char* mes = "Linux is so easy!";
//     char buffer[1024];
//     int fd;
//     fd = open("bite.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//     write(fd, mes, strlen(mes));
//     if(fd < 0)
//     {
//         printf("Open file ERROR!\n");
//         return 1;
//     }
//     fd = open("bite.txt", O_RDONLY | O_CREAT, 0666);
//     if(fd < 0)
//     {
//         printf("Open file ERROR!\n");
//         return 1;
//     }
//     read(fd, buffer, sizeof(buffer));
//     printf("%s\n", buffer);

//     return 0;
// }